package com.tuxing.draa_data.util;

import com.google.common.base.Strings;
import com.tuxing.draa_data.dao.center.NewDcBibliographyPeriDao;
import com.tuxing.draa_data.pojo.center.NewDcBibliographyPeri;
import lombok.extern.slf4j.Slf4j;

/**
 * @author yuanshihang
 * @version 1.0
 * @className CheckUtil
 * @description 基础描述: 期刊和图书比对工具类
 * @date 2022/1/4 19:45
 */
@Slf4j
public class CheckUtil {

    /**
     * @param title      期刊名称
     * @param printIssn  发行标准号
     * @param onlineIssn 線上標準號
     * @param cn         中文期刊CN
     * @param periDao    期刊数据库访问接口
     * @return 期刊信息
     * @decpription 查询期刊信息（没有期刊返回null）
     * @author yuanshihang
     * @date 2022/1/4 19:51
     * @version 1.0
     */
    public static NewDcBibliographyPeri findOneJournal(String title, String printIssn, String onlineIssn, String cn, NewDcBibliographyPeriDao periDao) {

        //1.根据print_issn进行检索匹配，如果有对应期刊信息直接返回（这部分要改动：后期先根据期刊DOI进行匹配）
        if (!Strings.isNullOrEmpty(printIssn)) {
            NewDcBibliographyPeri oneByPISSN = periDao.findOneByPISSN(printIssn,1);
            if (oneByPISSN != null) {
                return oneByPISSN;
            }
        }

        //2.再根据online_issn进行匹配，如果有直接返回期刊信息
        if (!Strings.isNullOrEmpty(onlineIssn)) {
            NewDcBibliographyPeri oneByEISSN = periDao.findOneByEISSN(onlineIssn);
            if (oneByEISSN != null) {
                return oneByEISSN;
            } else {
                //3.再根据期刊题名进行检索
                return periDao.findOneByTitle(title);
            }
        } else if (!Strings.isNullOrEmpty(cn)) {
            NewDcBibliographyPeri oneByCN = periDao.findOneByCN(cn);
            if (oneByCN != null) {
                return oneByCN;
            } else {
                //3.再根据期刊题名进行检索
                return periDao.findOneByTitle(title);
            }
        } else {
            //4.如果没有online_issn号可以直接通过题名检索
            return periDao.findOneByTitle(title);
        }

    }


}
